package core.logic.services;

import java.util.ArrayList;

import javax.swing.JOptionPane;

import controllers.BemanningAanduidenController;
import controllers.VerwijderenBemanningVanEenVluchtController;
import core.logic.dataAccess.PersoneelDAO;
import core.logic.dataAccess.Personeel_VluchtDAO;
import core.models.dataModels.BemanningAanduidenModel;
import core.models.dataModels.searchModels.ZoekGegVoorBookingModel;
import core.models.domainModel.Personeel;

public class VerwijderenBemanningVanEenVluchtService {
	
	private static BemanningAanduidenModel modelToevoegen;
	
	public static ZoekGegVoorBookingModel VulModelMetLijstVanBemanningsLeden(ZoekGegVoorBookingModel Model)
	{
		ArrayList<Personeel> lijstPersoneel = new ArrayList<Personeel>();
		//TODO model opvullen met bemanning van de vlucht
		lijstPersoneel = PersoneelDAO.PersoneelOpVlucht(Model);
		Model.setCvlPersoneel(lijstPersoneel);
		return Model;
				
	}
	
	public static void VerwijderBemanningVanVlucht(ZoekGegVoorBookingModel Model)
	{
		int ok=0;
		ok=PersoneelDAO.deleteBemanningVanVlucht(Model);
		
		if(ok>0)
		{
			JOptionPane.showMessageDialog(null, "Geselecteerde bemanning is verwijderd");
			
			//nakijken of er nog genoeg bemanning over is en zo nee melding geven 
			modelToevoegen = ControleVoldoendeBemanning(Model);
			
			//scherm doorverwijzen naar bemaning toevoegen als nodig
			/*
//			if(modelToevoegen.getCheckTeweiningBemannig().equals("OK"))
//			{
//				VerwijderenBemanningVanEenVluchtController.showView();
//			}
 * 
 */
//			if(modelToevoegen.getCheckTeweiningBemannig().equals("P")||(modelToevoegen.getCheckTeweiningBemannig().equals("S")))
//			{
//				//doorverwijzen naar bemanning toevoegen
//				modelToevoegen.setEnkeleVlucht(Model.enkeleVlucht);
//
//				BemanningAanduidenController AanduidenController = new BemanningAanduidenController();
//				AanduidenController.showView(modelToevoegen);
//			}
			
			
		}
		else
		{
			JOptionPane.showMessageDialog(null, "Geselecteerde bemanning is NIET verwijderd, er is dus iets misgegaan, whoeps!");
		}
	}
	
	public static BemanningAanduidenModel ControleVoldoendeBemanning(ZoekGegVoorBookingModel Model)
	{
		//ophalen wat het aantal is dat normaal aanwezig zou moeten zijn in een list 
		//deze list bevat als eerste int het aantal piloten en als 2de het aantal stewards
		//NODIG
		ArrayList<Integer> cvAantalBemanning = new ArrayList<Integer>();
		cvAantalBemanning= Personeel_VluchtDAO.AantalBemanning(Model);
//		Model.setCviAantalPilotenNodig(cvAantalBemanning.get(1));
//		Model.setCviAantalStewardsNodig(cvAantalBemanning.get(2));
		
	    modelToevoegen= new BemanningAanduidenModel();
	    if(!(cvAantalBemanning.get(1).equals(0) || cvAantalBemanning.get(2).equals(0)||cvAantalBemanning.get(1).equals(null) || cvAantalBemanning.get(2).equals(null)))
	    {
			modelToevoegen.setAantalPiloten(cvAantalBemanning.get(1));
			modelToevoegen.setAantalStuwards(cvAantalBemanning.get(2));
	    }

		
		//checken hoeveel er nu op zit na het verwijderen?
		ArrayList<Personeel> cvPersoneel= PersoneelDAO.PersoneelOpVlucht(Model);
		modelToevoegen.set_geselecteerd(cvPersoneel);
		
		int AantalPilotenOpVlucht=0;
  		int AantalStewardsOpVlucht=0;
  		String result="";
		
		for (Personeel personeel : cvPersoneel) 
		{
			if(personeel.get_personeelType().equals("P"))
			{
				AantalPilotenOpVlucht++;
			}
			if(personeel.get_personeelType().equals("S"))
			{
				AantalStewardsOpVlucht++;
			}
		}
		
		if(cvAantalBemanning.get(1)>AantalPilotenOpVlucht )
		{
			//melding te weinig piloten
			JOptionPane.showMessageDialog(null,"Te weinig piloten");
			
			//waarde terug geven voor verdere afhandeling
			modelToevoegen.setCheckTeweiningBemannig("P");
		}
		else if (cvAantalBemanning.get(2)>AantalStewardsOpVlucht )
		{
			//melding te weinig stewards
			JOptionPane.showMessageDialog(null,"Te weinig stewards");
			modelToevoegen.setCheckTeweiningBemannig("S");
		}
		else
		{
			//alles ok!!
			modelToevoegen.setCheckTeweiningBemannig("OK");
			
		}
		return modelToevoegen;
		
	}



}
